A modern motor vehicle is composed of over a thousand separate parts. New vehicle sales around the world exceeded 84 million in 2013. Managing this complexity is a challenge for original equipment manufacturers (OEMs) and their suppliers. For example, airbags manufactured by Takata Corporation were subject to a massive recall in the years 2013 through 2015 affecting close to 40 million vehicles. The size of the recall was necessitated in part by admissions from Takata Corporation that it had little clue as to which cars used its defective airbag inflators.
The complexity of modern motor vehicles extends also to software. An electronic control unit (ECU) is a generic term for any embedded system that controls one or more of the electrical system or subsystems in a motor vehicle. (Taken together, these systems are sometimes referred to as the vehicle's computer, although in fact there is no single computer but multiple computers.) Some modern motor vehicles have dozens of ECUs. Embedded software in ECUs continue to increase in line count, complexity, and sophistication. Some manufacturers are making cars that are connected to wireless cellular networks, making it possible in the future to update software via a download over a wireless network.
The Internet of Things is the network of physical objects or “things” embedded with electronics, software, sensors and connectivity to enable objects to exchange data with the manufacturer, operator and/or other connected devices. Each year, an ever increasing number of embedded devices are combining to create a worldwide network of autonomous embedded systems—the Internet of Things. Managing software updates for an Internet of Things space is very difficult since it is unknown in advance what the properties or capabilities of the thing to be updated will be.
Appendix A provides an example Query Grammar, defined as an ANTLR (Another Tool for Language Recognition) version 4 Grammar File.